<?php

class Model_RolesManager {
	
	/**
	 * $tb_roles
	 * @var Table_Roles
	 */
	var $tb_roles;
	
	function Model_RolesManager() {
		$this->tb_roles =& FLEA::getSingleton('Table_Roles');
	}
	
	/**
	 * 返回所有的Roles数据，不包含关联数据
	 * @return array
	 */
	function rolesList()
	{
		$this->tb_roles->disableLinks();
		return $this->tb_roles->findAll();
	}
	
	/**
	 * 修改一条role记录，不更新关联记录
	 * @param array $role
	 * @return boolin
	 */
	function updateRole($role)
	{
		return $this->tb_roles->update($role,false);
	}
	
	/**
	 * 创建一个新角色
	 * @param array $role
	 * @return int
	 */
	function createRole($role)
	{
		return $this->tb_roles->create($role,false);
	}
	
	/**
	 * 删除一个角色
	 *
	 * @param int $role_id
	 * @return boolin
	 */
	function removeRole($role_id)
	{
		// 检查角色是否可以安全删除
		if($this->_checksafeRemove($role_id)){
			return $this->tb_roles->removeByPkv($role_id);
		}else {
			return false;
		}
		
	}
	
	/**
	 * 检查一个角色是否可以安全删除
	 * @param int $role_id
	 * @return boolin
	 */
	function _checksafeRemove($role_id)
	{
		$role = $this->tb_roles->find($role_id);
		if(!isset($role['members']) and !isset($role['permissions']) and !isset($role['usergroups']) ){
			// echo 'can safe remove!';
			return true;
		}else{
			return false;
		}
		
	}
	
	/**
	 * 检查一个角色是否合法
	 */
	function _checkRole($conditions){
		$role = $this->tb_roles->find($conditions);
		if($role){
			if($role['rolename']=='admin'){
				return 'admin';
			}else{
				return true;
			}
		}else{
			return false;
		}
	}
	
	
	
}



?>